package com.ruoyi.common.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RemovalUtils {
    /**
     * 手动空格字符串
     */
    private final static String SPACE = "                  ";

    /**
     * 公务员系统简历分割方法
     *
     * @param resume 简历
     * @return 简历数组
     */
    public static List<String> resumeSplit(String resume) {

        String[] split = resume.split("[\\r]?[\\n]");
        List<String> resumeList = new ArrayList<>();
        StringBuilder stringBuilder = new StringBuilder();
        Pattern p = Pattern.compile("(\\d{4}).(\\d{1,2})-");
        for (String s : split) {
            Matcher matcher = p.matcher(s);
            if (matcher.find()) {
                int i1 = s.indexOf(matcher.group(0));
                if (i1 > 0) {
                    stringBuilder.append(s);
                    continue;
                }
                if (stringBuilder.length() > 0) {
                    resumeList.add(stringBuilder.toString());
                    stringBuilder.setLength(0);
                }
                stringBuilder.append(s);
            } else {
                stringBuilder.append(s);
            }
        }
        return resumeList;
    }

    /**
     * 获取没有对齐简历
     *
     * @param remark
     * @return
     */
    public static String[] getNoManualAlignmentRemarks(String remark) {
        if (StringUtils.isBlank(remark)) {
            return new String[0];
        }

        String[] values = remark.split("[\\r]?[\\n]");
        List<String> list = new ArrayList<String>();

        for (String value : values) {
            // 起空格
            if (value.startsWith(SPACE)) {
                // 空行不继续
                if (StringUtils.isBlank(value)) {
                    list.add(value);
                    continue;
                }

                if (list.size() >= 1) {
                    String prev = list.get(list.size() - 1);
                    if (!StringUtils.isBlank(prev)) {
                        list.remove(list.size() - 1);
                        prev = prev + value.trim(); // 合简历行
                        list.add(prev);
                    } else {
                        list.add(value);
                    }
                } else {
                    list.add(value);
                }
            } else {
                list.add(value);
            }
        }

        return list.toArray(new String[0]);
    }

    /**
     * 简历数组
     *
     * @param remark
     * @return
     */
    public static String[] getRemarks(String remark) {
        if (StringUtils.isBlank(remark)) {
            return new String[0];
        } else {
            return remark.split("[\\r]?[\\n]");
        }
    }

    /**
     * 去除空格的数组
     *
     * @param remark
     * @return
     */
    public static String[] getTrimmedRemarks(String remark) {
        if (StringUtils.isBlank(remark)) {
            return new String[0];
        } else {
            String[] values = remark.split("[\\r]?[\\n]");
            for (int i = 0; i < values.length; i++) {
                values[i] = values[i].trim();
            }
            return values;
        }
    }

    /**
     * 简历列表
     *
     * @param remark
     * @return
     */
    public static List<String> getRemarkList(String remark) {
        List<String> remarkList = new ArrayList<String>();
        String[] remarks = getRemarks(remark);
        for (String r : remarks) {
            // 转义html字符
            String tr = StringUtils.replace(r, "<", "&lt;");
            tr = StringUtils.replace(tr, ">", "&gt;");
            remarkList.add(tr);
        }

        return remarkList;
    }

    /**
     * 家庭成员是否死亡
     *
     * @param gzdw 工作单位
     * @param zw   职务
     * @param xz   现状
     * @param bz   备注
     * @return
     */
    public static boolean isDead(String gzdw, String zw, String xz, String bz) {
        String value = gzdw + zw + xz + bz;

        return value.indexOf("去世") >= 0 ||
                value.indexOf("逝世") >= 0 ||
                value.indexOf("过世") >= 0 ||
                value.indexOf("死亡") >= 0 ||
                value.indexOf("已故") >= 0 ||
                value.indexOf("已逝") >= 0 ||
                value.indexOf("病逝") >= 0 ||
                value.indexOf("病故") >= 0 ||
                value.indexOf("烈士") >= 0 ||
                value.indexOf("牺牲") >= 0;
    }

    public static List<String> getTrainList(String ts) {
        List<String> trainList = new ArrayList<String>();
        String[] trains = getTrain(ts);
        for (String r : trains) {
            // 转义html字符
            String tr = StringUtils.replace(r, "<", "&lt;");
            tr = StringUtils.replace(tr, ">", "&gt;");
            trainList.add(tr);
        }

        return trainList;
    }

    public static String[] getTrain(String ts) {
        if (StringUtils.isBlank(ts)) {
            return new String[0];
        } else {
            String[] values = ts.split("[\\r]?[\\n]");
            return values;
        }
    }

    private static String reg = "^\\d{4}\\.\\d{2}-- .*";

    /**
     * 现职时间
     *
     * @param remark
     * @return
     */
    public static String getXzsj(String remark) {
        List<String> list = getRemarkList(remark);
        if (list.size() == 0) {
            return null;
        }

        for (int i = list.size() - 1; i >= 0; i--) {
            String val = list.get(i);
            if (StringUtils.isNotBlank(val)) {
                if (val.matches(reg)) {

                    String dt = val.substring(0, 7);
                    return DateUtils.dateToString(dt);
                }
            }

        }

        return null;
    }
}
